$(function () {
  var currentPage = 1; //当前页
  var pageSize = 3; // 每页数据条数 

  // 1- 首页数据渲染
  function render () {
    $.ajax({
      type: 'get',
      url: '/product/queryProductDetailList',
      data: {
        page: currentPage,
        pageSize: pageSize
      },
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 渲染
        $('tbody').html(template('tmp', res));
        // 生成分页
        setPage(res.total, currentPage, pageSize, render);
      }
    })
  }

  render();

  // 2- 分页 
  function setPage (total) {
    // 用插件生成分页小按钮  
    $("#paginator").bootstrapPaginator({
      bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
      currentPage: currentPage,// 高亮的分页小按钮的下标 
      totalPages: Math.ceil(total / pageSize),// 分页按钮的个数     
      onPageClicked: function (event, originalEvent, type, page) {
        //为按钮绑定点击事件 page:当前点击的按钮值
        // 1- 改变当前页的取值 
        currentPage = page;
        // 2- 重新渲染
        render();
      }
    });
  }

  // 3- 下拉列表填充
  // ajax + 模板引擎 
  $.ajax({
    type: 'get',
    url: '/category/querySecondCategoryPaging',
    data: {
      page: 1,
      pageSize: 100
    },
    dataType: 'json',
    success: function (res) {
      console.log(res);
      // 渲染
      $('.cate-two-list').html(template('tmp-two-list', res));
    }
  })

  // 4-下拉列表选中效果
  // 当点击 下拉列表时： 
  // 1- 获取当前a标签的文字，设置给按钮的文本 
  // 2- 获取当前a标签的id,设置给隐藏域 ， 将来传递给后台的 
  $('.cate-two-list').on('click', 'a', function () {
    $('.btn-txt').text($(this).text());
    $('#brandId').val($(this).data('id'));
    // 当下拉列表选中后，恢复下拉列表的选中状态 
    $('#addform').data('bootstrapValidator').updateStatus('brandId', 'VALID');
  });

  // 5- 上传图片 
  // 要求：
  // 1- 必须上传三张图片 ，做为商品轮播图 
  // 2- 只保留最近上传三张 
  // 用数组解决问题： length, 下标
  var picArr = [];  //统计上传成功图片个数和顺序 

  $("#file").fileupload({
    dataType: "json",
    //e：事件对象
    //data：图片上传后的对象，通过data.result.picAddr可以获取上传后的图片地址
    done: function (e, data) {
      console.log(data.result);
      var img = data.result;
      // 把上传成功的图片添加到picArr中 
      // shift(); 删除数组的第一个元素
      // unshift(); 在数组前面添加元素
      // push();  在数组后面添加元素
      // pop();  删除数组的最后一个元素 
      picArr.unshift(img);
      // 图片预览效果 
      // before() 在盒子前面添加兄弟元素
      // after() 在盒子后面添加兄弟元素
      // prepend() 在盒子内部的前面添加子元素
      // append() 在盒子内部的后面添加子元素
      $('.img-box').prepend('<img src="' + img.picAddr + '" height="70">');

      // 判断只保留 最近上传的三张图片
      if (picArr.length > 3) {
        // 删除 最后一个元素
        picArr.pop();
        // 图片容器 删除最后一张图片 
        // remove()； 自杀 删除自己 
        // empty();  清空盒子内部 
        $('.img-box img:last-child').remove();
      }
      console.log(picArr);
      // 判断 如果图片个数为三张，说明数据合理，给隐藏域赋值 
      if (picArr.length == 3) {
        var str = JSON.stringify(picArr); // 把picArr 转成 json字符串 
        $('#picArr').val(str);
        // 当图片上传完成，并且图片为3张时，恢复图片的校验状态
        $('#addform').data('bootstrapValidator').updateStatus('picArr', 'VALID');
      }
    }
  });

  // 6-表单非空校验 
  //使用表单校验插件
  $('#addform').bootstrapValidator({
    //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
    excluded: [':disabled'],

    //2. 指定校验时的图标显示，默认是bootstrap风格
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },

    //3. 指定校验字段
    fields: {
      //校验用户名，对应name表单的name属性
      brandId: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请选择二级分类'
          }
        }
      },
      // 商品名称
      proName: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入商品名称'
          }
        }
      },
      // 商品描述
      proDesc: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入商品描述'
          }
        }
      },
      // 商品尺码
      size: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入商品尺码'
          },
          //正则校验: 必须是xx-xx格式， x数字  23-42
          regexp: {
            regexp: /^[1-9]\d-[1-9]\d$/,
            message: '尺码 必须是xx-xx格式， x数字  '
          }
        }
      },
      // 商品库存
      num: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入商品库存'
          },
          //正则校验： 非0开头的数字  3
          regexp: {
            regexp: /^[1-9]\d*$/,
            message: '库存必须是 非0开头的数字'
          }
        }
      },
      // 商品原价 是整数和小数 
      oldPrice: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入商品原价'
          }
        }
      },
      // 商品现价 是整数和小数 
      price: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入商品现价'
          }
        }
      },
      //图片信息
      picArr: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请上传3张图片'
          }
        }
      }
    }

  });


  // 7-手动恢复图片和下拉列表的校验状态
  // 1- 当下拉列表选中后，恢复下拉列表的选中状态 
  // 2- 当图片上传完成，并且图片为3张时，恢复图片的校验状态

  // 8- 尺码 和 库存 正则 校验

  // 9- 添加商品 
  // 1- 点击提交按钮，获取表单数据，在数据校验通过情况下，发送请求给后台，进行添加
  // 2- 添加完成，页面重新渲染 ， 表单重置， 模态框隐藏 ， 手动重置 图片 和按钮的文字

  $('#addform').on('success.form.bv', function (e) {
    e.preventDefault(); //阻止submit 提交
    //进行ajax 提交  
    $.ajax({
      type: 'post',
      url: '/product/addProduct',
      data: $('#addform').serialize(),
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 页面重新渲染
        render();
        // 表单重置: 重置表单数据和校验样式
        $('#addform').data('bootstrapValidator').resetForm(true);
        // 模态框隐藏 
        $('.modal-add').modal('hide');
        // 手动重置 图片 和按钮的文字
        $('.btn-txt').text('请选择二级分类');
        $('.img-box').empty(); //清空内部的图片 
        // 重置图片容器 picArr (吃完洗完)
        picArr = [];
      }
    })
  })





});